package com.example.jvm;

import com.sun.crypto.provider.DESKeyFactory;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ClassLoaderController {

    /**
     * 类加载器
     */
    public static void main(String[] args){
        //引导类加载器（负责加载JDK自带的一些核心类库）
        System.out.println(String.class.getClassLoader()); //是C++生成的对象，打印出来会是null
        //扩展类加载器 ExtClassLoader（负责加载JRE->ext包下的扩展类）
        System.out.println(DESKeyFactory.class.getClassLoader());
        //应用程序类加载器 AppClassLoader（负责加载自己写的类）
        System.out.println(ClassLoaderController.class.getClassLoader());

        //类加载器之间的父子关系
        ClassLoader appClassLoader = ClassLoader.getSystemClassLoader();
        ClassLoader extClassLoader = appClassLoader.getParent();
        ClassLoader bootStrapLoader = extClassLoader.getParent();

        System.out.println("引导类加载器的孙子：" + appClassLoader);
        System.out.println("引导类加载器的儿子：" + extClassLoader);
        System.out.println("引导类加载器：" + bootStrapLoader);


    }
}
